#ifndef _QUEUE_
#define _QUEUE_

#include <stdlib.h>

#define NODE_SIZE 2

typedef int element_t;

typedef enum boolean {false = 0, true} bool;

typedef struct queue_data *queue;

queue create(void);
/*this fuction creates a queue pointer and returns it*/
/*in case of failure rerurns NULL*/

bool empty(queue target_queue);
/*this fuction checks if the queue is empty*/
/*if the queue is returns true else, returns false*/

void delete(queue queue_target);
/*this fuction deletes the given queue*/

int size(queue queue_target);
/*this fuction returns the given's queue size*/

void clear(queue queue_target);
/*this fution clears the queue*/

bool push_back(queue queue_target, element_t data);
/*this fuction puhes an element at the queue*/
/*in case of failure returns false*/

bool pop_front(queue queue_target);
/*this fuction pops the queue's front element*/
/*if the queue is empty returns false*/

bool front(queue queue_target, element_t *data);
/*this fuction returns the queue's front element*/
/*if the queue is empty returns false*/

bool back(queue queue_target, element_t *data);
/*this fuction returns the queue's back element*/
/*if the queue is empty returns false*/

#endif
